package co.com.inversiones.xyz.ltda.bl.impl;

import java.util.Date;
import java.util.List;

import co.com.inversiones.xyz.ltda.bl.SolicitudBl;
import co.com.inversiones.xyz.ltda.dao.SolicitudDao;
import co.com.inversiones.xyz.ltda.dao.SucursalDao;
import co.com.inversiones.xyz.ltda.dto.Rol;
import co.com.inversiones.xyz.ltda.dto.Solicitud;
import co.com.inversiones.xyz.ltda.dto.Sucursal;
import co.com.inversiones.xyz.ltda.exception.BlException;
import co.com.inversiones.xyz.ltda.exception.DaoException;

public class SolicitudBLImpl implements SolicitudBl{
	
	SolicitudDao solicitudDAO;
	SucursalDao sucursalDAO;

	public SolicitudDao getSolicitudDAO() {
		return solicitudDAO;
	}

	public void setSolicitudDAO(SolicitudDao solicitudDAO) {
		this.solicitudDAO = solicitudDAO;
	}

	public SucursalDao getSucursalDAO() {
		return sucursalDAO;
	}

	public void setSucursalDAO(SucursalDao sucursalDAO) {
		this.sucursalDAO = sucursalDAO;
	}

	@Override
	public List<Solicitud> leerSolicitudesGood(String estado)
			throws DaoException, BlException {
		if(estado == null || "".equals(estado)){
			throw new BlException("El estado no puede ser una valor nulo o vacio");
		}
		return solicitudDAO.leerSolicitudesGood(estado);
	}

	@Override
	public List<Solicitud> leerSolicitudes(Rol rol, int op)
			throws DaoException, BlException {
		if(rol == null ){
			throw new BlException("El rol no puede ser una valor nulo");
		}
		if(op < 0 || op > 2){
			throw new BlException("El parametro op no puede tener valores diferentes de 1 o 0");
		}
		return solicitudDAO.leerSolicitudes(rol,op);
	}

	@Override
	public Solicitud buscarSolicitud(int codigo) throws DaoException,
			BlException {
		if("".equals(codigo)){
			throw new BlException("El codigo no puede ser una valor vacio");
		}
		return solicitudDAO.buscarSolicitud(codigo);
	}

	@Override
	public void guardarSolicitud(int sucursal, String tipo, String estado, 
			String nombreCliente, String correo, String celular, String texto, String producto)
			throws DaoException, BlException {
		
		if(tipo == null || "".equals(tipo)){
			throw new BlException("El tipo no puede ser una valor nulo o vacio");
		}
		
		if(estado == null || "".equals(estado)){
			throw new BlException("El estado no puede ser una valor nulo o vacio");
		}
		
		if(nombreCliente == null || "".equals(nombreCliente)){
			throw new BlException("El nombre del cliente no puede ser una valor nulo o vacio");
		}
		
		if(correo == null || "".equals(correo)){
			throw new BlException("El correo no puede ser una valor nulo o vacio");
		}
		
		if(celular == null || "".equals(celular)){
			throw new BlException("El celular no puede ser una valor nulo o vacio");
		}
		
		if(texto == null || "".equals(texto)){
			throw new BlException("El texto no puede ser una valor nulo o vacio");
		}
		
		if(producto == null || "".equals(producto)){
			throw new BlException("El estado no puede ser una valor nulo o vacio");
		}
		
		Sucursal sucursal02 = sucursalDAO.getSucursal(sucursal);
		if(sucursal02 == null){
			throw new BlException("Esta sucursal no existe en el sitema");
		}
		
		Solicitud solicitud = new Solicitud();
		solicitud.setCelular(celular);
		solicitud.setCorreo(correo);
		solicitud.setEstado(estado);
		solicitud.setFechaIngreso(new Date());
		solicitud.setNombreCliente(nombreCliente);
		solicitud.setProducto(producto);
		solicitud.setSucursal(sucursal02);
		solicitud.setTexto(texto);
		
		solicitudDAO.guardarSolicitud(solicitud);
		
		
	}

	@Override
	public void modificarSolicitud(Solicitud solicitud) throws DaoException,
			BlException {
		solicitudDAO.modificarSolicitud(solicitud);
		
	}

}
